/**
 * Copyright 2011 Joe Choi, All rights reserved.
 */
package tao.data.structure.tree;

import java.util.List;

/**
 * The tree to which can be add some sub-trees after creation  
 * 
 * @author Joe Choi
 * @version 1.0.0
 */
public interface GrowableTree<V> extends Tree<V> {
	/**
	 * Add subtrees
	 */
	public void add(GrowableTree<V>... tree);
	
	/**
	 * Add a subtree. if the subtree already exists, remove the old subtree and add a new one.
	 * The purpose of this method is to keep the sequence of subtrees to be consistent, that is,
	 * according to the sequence of the subtree is added 
	 */
	public void reAdd(GrowableTree<V> tree);
	
	/**
	 * Add some subtrees
	 */
	public void add(Trees<V> trees);
	
	/**
	 * Add a list of subtree
	 */
	public void add(List<GrowableTree<V>> treeList);
}
